
#include <iostream>
#include <string>
#include <algorithm>


using namespace std;
const int N = 1e5 + 10;
int n; 
string str;
int cnt[26];

// 但是这道题目的代码写起来还是有难度呀！！
int main(){
    cin >> n >> str;
//     首先处理出出现次数最多的字符
    int maxCnt = 0;
    char maxChar = '0';
    for (int i = 0; i < n; i++)
    {
        cnt[str[i] - 'a']++;
        if (cnt[str[i] - 'a'] > maxCnt) 
            maxCnt = cnt[str[i] - 'a'], maxChar = str[i];
    }
//     判断是否可以这个字符串是否可以重排
    if ((n  + 1) / 2 < maxCnt) {
        cout << "no" << endl;
        return 0;
    }
    else {
        string ret(" ", n);
        cout << "yes" << endl;
//         先处理出现次数最多的字符串
        int i = 0;
        while (maxCnt --)
        {
            ret[i] = maxChar;
            i += 2;
        }
//         cout << ret[2] << endl;
//        接下来处理较少的字符串
        for (int j = 0; j < 26; j++){
            while (cnt[j]-- && j + 'a' != maxChar){
                if (i >= n) i = 1;
                ret[i] = j + 'a';
                i += 2;
            }
        }
//         最后输出最终的重排字符串
        cout << ret;
    }
    
    return 0;
}